protocollo per trasmissioni punto-punto
(Point-to-Point Protocol)
|
Un protocollo che consente di connettere un computer a Internet via linea telefonica commutata, mantenendo gran parte delle prerogative che si avrebbero con un collegamento diretto. Tra le più importanti di queste prerogative abbiamo la possibilità di usare un browser Web, come Mosaic, Netscape Navigator o Internet Explorer.
Il PPP viene tipicamente considerato migliore dello SLIP (Serial Line Internet Protocol) poiché, a differenza di questÆultimo, esegue la correzione automatica degli errori, la compressione dei dati trasmessi, lÆautenticazione della password e assicura un miglior rendimento teorico (non sempre realizzato nella realtà). Qualsiasi computer che disponga di un numero IP può connettersi a Internet usando modem ad alta velocità. PPP è in grado di iniziare e terminare una sessione, come pure interrompere una chiamata e richiamare lo stesso numero nel caso in cui la linea sia particolarmente disturbata (questa funzione deve essere attivata dal particolare programma usato per eseguire la chiamata via modem).
Il PPP incapsula i comuni protocolli di livello rete (terzo livello OSI) allÆinterno di pacchetti specializzati. Due esempi in questo senso sono il IPCP (IP su PPP) e il IPXCP (lÆIPX su PPP). Può essere utilizzato come sostituto del driver di rete così che gli utenti remoti possano collegarsi alla LAN come se fossero in locale. I protocolli usati per lÆautenticazione della password sono il Password Authentication Protocol (PAP) e il Challenge Handshake Authentication Protocol (CHAP). Le specifiche del protocollo sono contenute nellÆRFC 1661 (che rende obsolela lÆRFC 1548).
Spiegazione dettagliata:
PPP (Point-to-Point Protocol)
Nato nel dicembre 1993 e perfezionano nel luglio 1994 per iniziativa di William Allen Simpson (autodefinitosi sognatore ad occhi aperti), il PPP è il più largamente usato tra i protocolli Internet visto che costituisce lo strumento principe per accedere alla Rete per mezzo di un modem. Esso rappresenta un vettore per altri protocolli che, lasciati a se stessi, non potrebbero viaggiare su una linea punto-punto, vale a dire una linea telefonica o qualsiasi altra connessione su lunga distanza che veda ai propri estremi un solo destinatario e un solo mittente. Nella sua versione nativa, il protocollo TCP/IP funziona solamente in rete locale e necessita un vettore per muoversi su una rete geografica. Quando ci colleghiamo da casa, da un albergo o anche dallÆufficio mediante una linea a lunga distanza, lÆunico punto di contatto possibile con il sistema allÆaltro capo è il modem oppure un dispositivo analogo (come unÆinterfaccia ISDN) e dobbiamo dipendere da questo per inviare le nostre
richieste su Internet e ricevere le risposte. AllÆaltro capo della linea cÆè un sistema che funge da intermediario tra noi e la rete e che può essere un altro computer oppure un router.
Il PPP è progettato per veicolare numerosi protocolli su una sola linea, il più comune tra questi è naturalmente lÆIntenet Protocol (IP) il quale a sua volta funge da vettore per altri protocolli applicativi di grande interesse come lÆHTTP (HyperText Transfer Protocol) per la consultazione di pagine Web, lÆFTP (File Transfer Protocol) per il trasferimento di file a distanza, lÆSMTP (Simple Mail Transfer Protocol) per lÆinivio dei messaggi di posta elettronica, il POP3 (Post Office Protocol) per la copia in locale dei messaggi presenti nella nostra casella postale, lÆNNTP (Network News Transfer Protocol) per la consultazione di newsgroup e qualsiasi altro protocollo sia utile durante una sessione di collegamento con Internet. Il PPP li contiene tutti come una sorta di busta in cui sÆinseriscono altre buste per spedirle a un singolo destinatario. ╚ come raccogliere allÆufficio posta tutte le missive interne destinate a una filiale e inviarle allÆufficio posta allÆaltro estremo
usando un singolo pacco. LÆufficio posta della filiale aprirà il pacco e distribuirà le lettere ai singoli destinatari, restituendoci un secondo pacco con le risposte.
Il PPP ha una missione è triplice. Deve incapsulare i pacchetti generati dagli altri protocolli (datagrammi) allÆinterno di un singolo pacchetto. Deve attivare la connessione con il sistema remoto, configurarla e collaudarla. Deve disporre degli strumenti per controllare al proprio interno il flusso di tutti gli altri protocolli.
Il Link Control Protocol
La primissima fase dÆintervento del PPP è nel creare la connessione con il sistema remoto. Ogni volta che ci si collega con una macchina distante è necessario negoziare i parametri di lavoro che verranno usati nel corso della connessione. Questo viene fatto in primo luogo dal modem che si accorda con il modem allÆaltro estremo su quale sarà la velocità di trasferimento e la compressione dei dati con correzione di errore da eseguire a livello fisico tra i due apparecchi. Tale prima fase rimane del tutto trasparente al PPP. Una volta che i modem hanno instaurato il legame fisico, i due sistemi si possono parlare e a questo punto devono mettersi dÆaccordo su quale formato dÆincapsulamento utilizzare, sulla dimensione da assegnare ai pacchetti in transito e sulle modalità per porre fine al collegamento una volta che la sessione sia terminata.
Tale negoziato è affidato a un protocollo specializzato allÆinterno di PPP, che si chiama Link Control Protocol. QuestÆultimo è responsabile per identificare qualsiasi errore nella connessione e per assicurare che le due macchine parlino la medesima lingua. Durante questa fase preliminare, inoltre, si possono eseguire eventuali operazioni di autenticazione del chiamante attraverso un altro protocollo specializzato, che può essere il CHAP (Challenge Handshake Authentication Protocol) oppure il PAP (Password Authentication Protocol). ╚ in Link Control Protocol che si accorge se la connessione è venuta a mancare oppure se sta funzionando male per qualche difetto fisico e che segnala la cosa ai due computer interessati dal collegamento.
Gli NCP tutto fare
Una volta che la connessione è stata attivata, i due computer sono pronti a conversare ma non hanno ancora deciso che lingua utilizzare. Probabilmente useranno il protocollo IP, ma prima devono attivare tutti quei meccanismi che permetteranno dÆincapsulare le trame IP nei pacchetti PPP senza che lÆIP se ne accorga. Uno di questi gradini preliminari è lÆassegnazione dellÆindirizzo di rete. Lo standard vuole che tutte le macchine collegate a Internet per scopi di navigazione dispongano di un indirizzo IP univoco in tutto il mondo. Tale indirizzo serve per identificare il mittente delle richieste e per sapere dove inviare le risposte. Viene assegnato da enti internazionali che tengono un registro di tutti gli indirizzi distribuiti. Naturalmente non è molto pratico che ogni singolo navigatore Internet espleti le pratiche burocratiche per richiederne uno proprio, anche perché una delle condizioni per lÆassegnazione di questi indirizzi è che la macchina su cui verrà utilizzato sia
collegata a Internet in modo permanente, il che non coincide con la nostra esigenza di usare il PPP per accedere alla Rete via modem in modo saltuario. La soluzione consiste nellÆaffidare un gruppo dÆindirizzi a società che poi li distribuiscono ai propri utenti. Un esempio classico è quello degli Internet Service Provider che amministrano questi indirizzi fra tutti i propri iscritti. Tuttavia, lÆISP ha bisogno di un sistema automatico per eseguire questa assegnazione: non è molto pratico affidare un indirizzo a ciascun abbonato e poi tenerne una registrazione puntuale. Inoltre lÆabbonato si collega solo in certe ore del giorno e sarebbe uno spreco riservargli un indirizzo a tempo pieno. Infine lÆabbonato potrebbe cambiare provider e continuare a usare lÆindirizzo vecchio con il nuovo provider provocando problemi di configurazione per il nuovo e di approvvigionamento dÆindirizzi per il vecchio.
La soluzione consiste nellÆassegnare dinamicamente un numero IP al momento della connessione. Questo lavoro viene svolto dal Network Control Protocol, il quale si occupa anche di selezionate anche qualsiasi altro protocollo rete si debba utilizzare sulla connessione in aggiunta allÆIP (ad esempio lÆIPX). Esiste in effetti unÆintera famiglia di NCP, ciascuno dedicato a uno scopo specifico e lÆincapsulamento non si limita al protocollo IP, ma abbraccia anche IPX e svariati altri protocolli proprietari, tra cui quelli di Xerox, Banyan, Apple, Digital Equipment, IBM SNA e altri ancora (vedi lÆRFC 1700 o STD 2).
LÆNCP per protocollo IP usa a sua volta protocollo dedicato, lÆIPCP (IP Control Protocol), che assomiglia allÆLCP ma ha la prerogativa abilitare, disabilitare e configurare i moduli IP a entrambi gli estremi della linea. ╚ questo il protocollo che negozia tutti i parametri specifici di questo ambiente, come la compressione IP e TCP e lÆassegnazione automatica dellÆindirizzo alla stazione remota. Inoltre lÆIPCP blocca il flusso dei pacchetti IP fino a quando la connessione non è stata instaurata per intero, comprese le eventuali fasi di autenticazione del chiamante, e fa in modo che nel campo dati del PPP non entrino più informazioni di quelle che ci stanno e impone la frammentazione delle stesse in caso contrario. Il protocollo che svolge funzioni analoghe per IPX si chiama IPXCP.
Facilità di configurazione
Dovendo essere usato da persone non esperte, il PPP è concepito per semplificare il più possibile le modalità di collegamento. I parametri impostati per difetto (default) sono idonei per la maggior parte delle connessioni e le eventuali eccezioni vengono risolte automaticamente tra le due macchine (definite peer o pari nel linguaggio tecnico) senza intervento umano. Là dove il protocollo LCP riesce a eseguire solo una negoziazione parziale, entrano in gioco uno o più NCP per sistemare il resto. Di fatto è possibile usare qualsiasi tipo di connessione remota, non solo il modem. Esistono infatti versioni del protocollo PPP progettate per funzionare su linea ISDN, su rete X.25 e su fibra ottica ad alta velocità.
Il formato della trama
Per costruire il proprio pacchetto dÆinformazioni, PPP sÆispira a un vecchio protocollo, molto conosciuto nelle reti di grandi sistemi e nelle reti pubbliche: HLDC (High-Level Data Link Control). Si tratta di un protocollo nato per le connessioni sincrone (linee dedicate) perciò presenta caratteristiche bit-oriented, tuttavia PPP usa la trama a proprio modo e può quindi funzionare sia come protocollo sincrono bit-oriented sia come protocollo byte-oriented per linee asincrone, usando 8 bit di dati e nessuna parità (lÆimpostazione classica della porta seriale).
La prima parte della trama contiene un flag (segnalatore) che ha un valore sempre fisso (7E espresso in cifre esadecimali), un indirizzo iniziale (con valore fisso esadecimale FF) e un campo di controllo (esadecimale 03). Queste parti sono invariabili e identificano il tipo di pacchetto. Segue immediatamente dopo lÆindicazione del tipo di protocollo in uso. AllÆinizio della sessione il valore di questo campo sarà 0021 per indicare che si sta usando il Link Control Protocol per negoziare i primi parametri di connessione. Subito dopo subentra lÆNCP (8021) e lÆeventuale protocollo di autenticazione: PAP (C023) o CHAP (C223). Nel caso si voglia mantenere sotto controllo la qualità del collegamento è possibile ricorrere a un altro protocollo chiamato Link Quality Report che cÆinforma su quante informazioni da noi trasmesse sono andate perdute lungo la linea. Una volta terminati questi preamboli, possiamo chiamare in causa il protocollo di trasporto vero e proprio che sarà IP, TCP o
altro. Segue un campo dedicato ai dati (cioè al datagramma IP che viene incapsulato nel pacchetto PPP) e che corrisponde, come dimensione massima, alla capienza di una trama Ethernet. Non a caso Internet è nata proprio usando Ethernet tra i suoi fondamenti primari.
Il pacchetto PPP si chiude con la classica sequenza di verifica (Frame Check Sequence) calcolata sullÆintera trama, compreso il campo indirizzo e il campo di controllo iniziali. Segue un altro flag che separa la trama corrente da quella successiva.
Caratteri speciali
Come tutti i protocolli asincroni byte-oriented, anche PPP usa alcuni caratteri speciali per regolare lo scambio di dati tra le due macchine. Il più importante fra questi è il carattere 7E (flag) usato come riconoscimento dellÆinizio e della fine della trama. Grazie alla sua presenza non cÆè bisogno di mantenere i due sistemi sincronizzati tra di loro attraverso qualche congegno di temporizzazione: basta che il destinatario resti in ascolto del carattere 7E (valore decimale126 - carattere ASCII Ç tilde) per determinare i confini del pacchetto. In virtù di questo fatto, come in tutti i protocolli di tipo byte-oriented, il medesimo carattere non può essere utilizzato allÆinterno del campo dati perché provocherebbe lÆinterruzione prematura della trasmissione. DÆaltro canto, rispettare questo limite equivarrebbe a impedire la trasmissione di file binari, cioè i file di programma, che possono contenere qualsiasi sequenza di bit, incluso 7E, e che costituiscono una delle risorse più
interessanti per navigatori Internet (pensiamo ai vari shareware, ai driver, agli aggiornamenti software gratuiti). La soluzione consiste nellÆistruire il protocollo PPP di ñsaltare" (escape) il carattere quando lo incontra allÆinterno del campo dati. Ma poiché il computer non ha altro modo per sapere quali siano i confini del campo dati se non proprio attendere lÆarrivo del carattere 7E, si richiede la sostituzione di tutti i caratteri 7E contenuti nel campo dati con una coppia di caratteri alternativa, ma riconoscibile. A questo si arriva usando un altro carattere speciale chiamato ñescape" che si scrive 7D (valore decimale 125 - carattere ASCII } graffa chiusa) che serve segnalare che il carattere immediatamente successivo non è ciò che sembra, bensì costituisce in realtà la trasformazione di un carattere precedente che non poteva essere trasmesso nella sua forma originale.
Quando la macchina in ricezione incontra il carattere 7D, sa che deve elaborare quello successivo e recuperare il carattere originale. LÆelaborazione consiste nel prendere il sesto bit del carattere in questione e complementarlo (trasformarlo in 0 nel caso sia un 1 oppure viceversa). Facciamo un esempio prendendo appunto il carattere di flag 7E che scritto in notazione binaria diventa 0111 1111, cambiamo il suo sesto bit e otteniamo questa nuova sequenza: 0101 1111 che corrisponde alla notazione esadecimale 5D. In trasmissione, ogni volta che nel campo dati compare 7E, il protocollo sostituirà automaticamente la coppia di caratteri 7D,5D. AllÆaltro capo, il protocollo di ricezione eseguirà Æoperazione inversa 7D,5D = 7E. Questa regola vale per qualsiasi carattere speciale che debba filtrare attraverso le maglie dei vari protocolli in gioco senza provocare conseguenze. Prendiamo lÆesempio di un file che contenga il carattere 7D (cioè il carattere di escape). Applichiamo lo stesso
sistema e perciò avremo una sequenza 7D,5D = 7D. Tutti i caratteri che hanno un valore esadecimale inferiore a 20 vengono trattati nello stesso modo. Infatti nel codice ASCII i primi trentadue caratteri (da 00 a 20 esadecimale) possono rappresentare comandi interpretabili dal modem oppure dalla stampante. In questa regione troviamo infatti il comando di avanzamento riga, di avanzamento pagina, di ritorno a capo, di cancellazione allÆindietro e altro ancora. Il meccanismo di filtraggio è sempre il medesimo: li si fa precedere dal codice 7D seguito da un codice esadecimale calcolato trasformando il sesto bit del numero originale. Perché il sesto bit? Perché 0010 0000 corrisponde al numero esadecimale 20, cioè alla soglia dalla quale vogliamo cominciare ad applicare questo filtro, e se prendiamo questo numero e lo sovrapponiamo a un qualsiasi altro numero esadecimale con unÆoperazione di OR esclusivo, vediamo che lÆeffetto prodotto è una complementazione del sesto bit a partire da
destra. Se già sappiamo che alcuni dei primi 32 caratteri ASCII sono innocui, possiamo usare il Link Control Protocol per specificare quali di questi caratteri lasciar transitare senza codifica di escape.
In fase di trasmissione su linea telefonica, di solito vengono soppressi i campi indirizzo e controllo, che sono sempre uguali e possono essere aggiunti nuovamente allÆaltro estremo quando la trama viene ricostruita dalla stazione ricevente. La decisione di comprimere lÆintestazione della trama può anche essere unilaterale: il mittente tralascia di spedire il campo indirizzo e controllo e il ricevente legge la trama e, non incontrando i valori FF e 03, suppone che siano stati omessi, perciò li aggiunge di propria iniziativa.
Le specifiche primarie del protocollo PPP sono contenute nellÆRFC 1661, ma più di una dozzina di altre RFC collegate descrivono le modalità per incapsulare i diversi protocolli nei pacchetti PPP e descrivono in che modo eseguire il negoziato iniziale e tenere sotto controllo la qualità della linea. Tra le RFC accessorie merita attenzione la 1334 dedicata allÆautenticazione degli accessi.
Controllo degli accessi
Abbiamo visto che, una volta completata la predisposizione della connessione attraverso LCP, capita sovente che il sistema chieda unÆidentificazione. Esistono due modalità per fornire nome e password. La prima consiste nel protocollo PAP (Password Authentication Protocol) il quale attende che la connessione sia attiva dopo di che continua a inviare la coppia ñnome/password" fino a quando il terminale remoto risponde convalidando lÆaccesso oppure negandolo e terminando la connessione. Questo non è un approccio molto sicuro visto che la password viaggia sulla rete in chiaro e chiunque potrebbe intercettarla. Inoltre il sistema può essere bombardato da ripetuti tentativi di accesso da parte di un utente esterno che prova numerose combinazioni fino a quando ne azzecca una. ╚ lÆutente in remoto che ha la piena discrezione sulla frequenza e la durata dei propri tentativi di accesso.
Il protocollo CHAP (Challenge Handshake Authentication Protocol) è più robusto poiché verifica periodicamente lÆidentità del sistema remoto usando un sistema di handshake (sincronizzazione) a tre vie. LÆoperazione viene seguita nel momento in cui la connessione è attivata e può essere ripetuta dopo. Non appena la connessione è completa, CHAP manda un messaggio di altolà (challenge) al sistema dellÆutente il quale esegue un calcolo sul messaggio ricevuto basandosi su un matrice in proprio possesso e spedisce la risposta al sistema centrale. QuestÆultimo, che nel frattempo ha eseguito il medesimo calcolo, confronta i risultati e in caso affermativo abilita lÆaccesso, oppure lo nega. Il calcolo si basa su un sistema one-way hash.
Ogni volta che invia un altolà (challenge), il sistema autenticatore inserisce un numero progressivo allÆinterno del pacchetto, numero che viene incrementato a ogni tentativo di connessione seguente. Contemporaneamente modifica anche il contenuto del pacchetto di challenge così da riportare sotto il proprio controllo la frequenza e la durata delle operazioni di autenticazione e riducendo il rischio di attacchi. Per funzionare, questo meccanismo richiede lÆesistenza di un ñsegreto" noto unicamente al sistema centrale (autenticatore) e al sistema remoto (quello che tenta lÆaccesso). Segreto che non può essere trasferito sulla rete, ma deve essere recapitato in modo sicuro per vie diverse. La lunghezza del segreto deve essere di almeno 8 bit, ma la sicurezza aumenta in proporzione alla lunghezza e negli Stati Uniti la maggiore protezione oggi raggiungibile è con 128 bit. Il sistema one-way hash viene scelto in modo che sia praticamente impossibile risalire al segreto partendo
semplicemente dal messaggio di challenge e dalla risposta. Il messaggio di challenge deve essere unico nel suo genere (per consentire il login da qualsiasi parte del mondo) e imprevedibile. Se fosse prevedibile, lÆintruso potrebbe intrufolarsi fornendo uno dei challenge precedentemente intercettati.
La qualità del sistema di protezione dipende in larga misura dallÆapplicazione che ne fa uso. Il protocollo PPP fornisce unicamente gli strumenti per trasportare le informazioni, mentre tutte le funzioni di autenticazione vengono svolte altrove, con criteri diversi a seconda dei Paesi in cui si svolgono. Ad esempio, la tecnologia one-way hash 128 esistente negli USA non può essere esportata in Europa in quanto ñmunizione" protetta dalla legislazione statunitense. Esistono soluzioni a 128 bit europee, ma non sono disponibili a tutti.
Gli standard pubblicati su PPP
Documenti primari
RFC 1661 standard primario aggiornato
RFC 1548 standard obsoleto sostituito dalla RFC 1661
RFC 1549 formattazione delle trame PPP in trame HDLC
RFC 1552 ipx su PPP (IPXCP)
RFC 1570 estensioni LCP
RFC 1598 PPP su X.25
RFC 1618 PPP su ISDN
RFC 1619 PPP su SONET/SDH
RFC 1638 PPP Bridging Control Protocol
RFC 1662 altro sulla formattazione di trame PPP in trame HDLC
RFC 1663 trasmissione affidabile dei dati
RFC 1762 DECnet su PPP
RFC 1763 Banyan VINES su PPP
RFC 1764 protocolli Xerox su PPP
RFC 1841 Network Control Protocol con estensioni lan (per router remoti)
RFC 1877 estensioni ai name address server
RFC 1915 Connection Control Protocol ed Encryption Control Protocol
Documenti collegati
RFC 1332 Network Control Protocol per connessione ip su PPP (IPCP)
RFC 1333 monitoraggio sulla qualità della connessione
RFC 1334 protocolli di autenticazione per PPP (CHAP e PAP)
|
|